# 最终解决方案脚本 - 使用最基本的方法完全重写文件
import os
import shutil

# 文件路径
original_file = r'd:\未知\yolo_apply\video_processing\video_processor.py'
final_backup = r'd:\未知\yolo_apply\video_processing\video_processor.py.final_backup'
temp_file = r'd:\未知\yolo_apply\video_processing\video_processor_final.py'

# 确保我们使用最终备份
if os.path.exists(final_backup):
    print(f"使用最终备份文件: {final_backup}")
    
    # 读取备份文件的原始内容
    with open(final_backup, 'r', encoding='utf-8', errors='replace') as f:
        content = f.read()
    
    # 简单地将内容写入新文件，使用明确的换行符
    with open(temp_file, 'w', encoding='utf-8', newline='\n') as f:
        f.write(content)
    
    # 现在，让我们创建一个更简单的脚本，只处理有问题的区域
    print(f"已创建临时文件: {temp_file}")
    
    # 创建一个直接修复脚本
    fix_script = """
# 直接修复脚本
with open(r'%s', 'r', encoding='utf-8') as f:
    lines = f.readlines()

# 找到问题区域
problem_start = -1
problem_end = -1
for i, line in enumerate(lines):
    if '# 错误率过高时触发警告和恢复' in line:
        problem_start = i
    elif problem_start != -1 and 'error_count = 0' in line:
        problem_end = i
        break

print(f"问题区域从第{problem_start+1}行到第{problem_end+1}行")

# 创建一个新的文件内容列表
new_lines = []

# 添加问题区域之前的所有行
for line in lines[:problem_start]:
    new_lines.append(line)

# 添加注释和重置错误计数
# 保持与周围代码相同的缩进
if problem_start > 0:
    prev_line = lines[problem_start-1]
    indent = ' ' * (len(prev_line) - len(prev_line.lstrip()))
else:
    indent = ''

new_lines.append(indent + '# 错误率过高时触发警告和恢复\n')
new_lines.append(indent + 'error_count = 0\n')

# 添加问题区域之后的所有行
for line in lines[problem_end+1:]:
    new_lines.append(line)

# 写回文件
with open(r'%s', 'w', encoding='utf-8', newline='\n') as f:
    f.writelines(new_lines)

print("已直接修复问题区域")
""" % (temp_file, temp_file)
    
    # 保存并执行直接修复脚本
    fix_script_path = r'd:\未知\yolo_apply\direct_fix.py'
    with open(fix_script_path, 'w', encoding='utf-8') as f:
        f.write(fix_script)
    
    print("执行直接修复脚本...")
    os.system(f'python {fix_script_path}')
    
    # 替换原文件
    os.replace(temp_file, original_file)
    print(f"已用修复后的文件替换原文件: {original_file}")
    print("现在让我们再次尝试编译...")
else:
    print(f"错误: 找不到最终备份文件 {final_backup}")